package com.econ.powercloud.ems.service.dao;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.econ.powercloud.ems.dal.entity.EmsModuleConfig;
import com.econ.powercloud.ems.dal.mapper.EmsModuleConfigMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Author : zjf
 * @Description :
 * @Date : 2022/11/10 16:40
 * @Modified by : zjf
 */
@Repository
public class EmsModuleConfigDAO extends ServiceImpl<EmsModuleConfigMapper, EmsModuleConfig> {

    public Integer deleteByModule(Integer module){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(EmsModuleConfig::getModule,module);
        return this.baseMapper.delete(wrapper);
    }

    public List<EmsModuleConfig> selectListByModule(Integer module){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(EmsModuleConfig::getModule,module);
        return this.baseMapper.selectList(wrapper);
    }

    public Integer deleteByDeviceCodesAndModule(List<String> deviceCodes,Integer module){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(EmsModuleConfig::getModule,module);
        wrapper.in(EmsModuleConfig::getDeviceCode,deviceCodes);
        return this.baseMapper.delete(wrapper);
    }

    public List<EmsModuleConfig> selectListByModuleAndDeviceCodes(Integer module,List<String> deviceCodes){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(module != null,EmsModuleConfig::getModule,module);
        wrapper.in(CollectionUtils.isNotEmpty(deviceCodes),EmsModuleConfig::getDeviceCode,deviceCodes);
        return this.baseMapper.selectList(wrapper);
    }

    public List<EmsModuleConfig> selectListByModuleList(List<Integer> moduleList){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        if (CollectionUtils.isNotEmpty(moduleList)){
            wrapper.in(EmsModuleConfig::getModule,moduleList);
        }
        return this.baseMapper.selectList(wrapper);
    }

    public void deleteByModuleAndGroupId(Integer module,Integer groupId){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(EmsModuleConfig::getModule,module);
        wrapper.eq(EmsModuleConfig::getGroupId,groupId);
        this.baseMapper.delete(wrapper);
    }

    public List<EmsModuleConfig> selectListByModuleAndGroupId(Integer module,Integer groupId){
        LambdaQueryWrapper<EmsModuleConfig> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(EmsModuleConfig::getModule,module);
        wrapper.eq(EmsModuleConfig::getGroupId,groupId);
        return this.baseMapper.selectList(wrapper);
    }
}
